"""
飞书知识库爬虫启动脚本 - 多级嵌套目录版本
"""

import asyncio
import sys
import os
from feishu_wiki_crawler import FeishuWikiCrawler

def print_banner():
    """打印启动横幅"""
    print("=" * 70)
    print("🚀 飞书知识库爬虫 v2.0 - 多级嵌套目录专业版")
    print("📚 智能递归展开所有目录层级，完整爬取知识库文档")
    print("🎯 支持复杂的多级目录结构，按路径组织保存文档")
    print("=" * 70)

def print_features():
    """打印功能特点"""
    print("\n✨ 新增功能特点:")
    print("🔄 递归展开多级嵌套目录（最多15层深度）")
    print("📂 按目录结构组织保存文档")
    print("📊 生成详细的文档结构和爬取报告")
    print("🖼️ 提取文档中的图片和表格信息")
    print("📅 自动识别发布日期和更新日期")
    print("🛡️ 增强的反爬虫机制和错误处理")
    print("📝 详细的爬取日志和进度显示")

async def main():
    """主函数"""
    print_banner()
    print_features()
    
    # 默认配置
    default_url = "https://my-ichery.feishu.cn/wiki/UkYtwGxOtieErfkzUKkcjx48nib"
    default_output = "feishu_wiki_docs"
    
    print(f"\n📍 目标URL: {default_url}")
    print(f"📁 输出目录: {default_output}")
    print(f"🎛️ 最大递归深度: 15层")
    print(f"💾 文档将按目录结构保存")
    
    # 显示预计操作
    print(f"\n🔧 爬虫将执行以下操作:")
    print(f"  1️⃣ 访问知识库首页")
    print(f"  2️⃣ 递归展开所有目录层级")
    print(f"  3️⃣ 提取所有文档链接")
    print(f"  4️⃣ 逐个爬取文档内容")
    print(f"  5️⃣ 按目录结构保存为Markdown文件")
    print(f"  6️⃣ 生成爬取报告和文档结构图")
    
    # 确认是否开始
    print(f"\n⚠️  注意事项:")
    print(f"  • 爬取过程可能需要较长时间（取决于文档数量）")
    print(f"  • 浏览器会自动打开，请勿手动操作")
    print(f"  • 如需登录，请在浏览器中完成后等待自动继续")
    
    response = input(f"\n🤔 是否开始爬取？(y/n): ").strip().lower()
    if response not in ['y', 'yes', '是', '确定']:
        print("❌ 取消操作")
        return
    
    try:
        # 创建爬虫实例
        crawler = FeishuWikiCrawler(default_url, default_output)
        
        # 开始爬取
        print(f"\n🎯 开始爬取知识库...")
        print(f"📊 实时进度将在日志中显示")
        print(f"🚫 请勿关闭此窗口或手动操作浏览器")
        print("-" * 70)
        
        await crawler.run()
        
        print(f"\n" + "=" * 70)
        print(f"✅ 爬取完成！")
        print(f"📂 请查看 '{default_output}' 目录中的文档")
        print(f"📊 查看 'crawl_report.json' 了解爬取统计")
        print(f"🗂️ 查看 'document_structure.json' 了解文档结构")
        print(f"=" * 70)
        
    except KeyboardInterrupt:
        print(f"\n⏹️  用户中断操作")
        print(f"📋 已爬取的文档仍保存在输出目录中")
    except Exception as e:
        print(f"\n❌ 发生错误: {str(e)}")
        print(f"🔍 请检查网络连接和URL是否正确")
        print(f"📝 详细错误信息请查看控制台日志")

if __name__ == "__main__":
    try:
        asyncio.run(main())
    except KeyboardInterrupt:
        print(f"\n👋 程序已退出")
    finally:
        input(f"\n按回车键退出...")